require 'rubygems'
require 'savon'

class TicketInfo

  def initialize
    @client_ticket = Savon::Client.new do
      wsdl.document = "http://mc747atendimento.no-ip.org:2121/AtendimentoCliente.AtendimentoCliente.svc?wsdl"
	  #wsdl.element_form_default = :unqualified
    end
	
	#Savon.configure do |config|
	#	config.env_namespace = :soap
	#end
	
  end
  
  
  # Cria um novo chamado
  def abrir_chamado(ticket)
  
	puts "\nTicket="
	puts ticket
	
	xml = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:aten="http://schemas.datacontract.org/2004/07/AtendimentoCliente">
	   <soapenv:Header/>
	   <soapenv:Body>
		  <tem:Abrir_Chamado>
			 <tem:chamado>
				<aten:Descricao>' + ticket['desc'] + '</aten:Descricao>
				<aten:IdCliente>00000000-0000-0000-0000-000000000012</aten:IdCliente>
				<aten:IdPedido></aten:IdPedido>
				<aten:IdProduto></aten:IdProduto>
				<aten:IdSolicitante>' + ticket['idCliente'] + '</aten:IdSolicitante>
				<aten:TipoChamado>0</aten:TipoChamado>
			 </tem:chamado>
		  </tem:Abrir_Chamado>
	   </soapenv:Body>
	</soapenv:Envelope>'
	
	
	r = @client_ticket.request 'Abrir_Chamado', :xmlns => "http://tempuri.org/"  do 
	  soap.xml = xml
	  http.headers["SOAPAction"] = '"http://tempuri.org/IAtendimentoCliente/Abrir_Chamado"'
    end
    h = r.to_hash
	
	puts "\nRetorno abrir chamado: "
	puts h
	
	list = h[:abrir_chamado_response]
	
	puts "\nList="
	puts list
	
	t = Ticket.new
	t.id = list[:abrir_chamado_result][:id]
	t.data = list[:abrir_chamado_result][:data]

    t
	
  end
  
  # Realiza a consulta de um chamado pelo id
  def consultar_chamado(idChamado)
  
	xml = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
	   <soapenv:Header/>
	   <soapenv:Body>
		  <tem:Consultar_Chamado>
			 <tem:idCliente>00000000-0000-0000-0000-000000000012</tem:idCliente>
			 <tem:idChamado>' + idChamado + '</tem:idChamado>
		  </tem:Consultar_Chamado>
	   </soapenv:Body>
	</soapenv:Envelope>'
  
  
	r = @client_ticket.request 'Consultar_Chamado', :xmlns => "http://tempuri.org/"  do 
	  soap.xml = xml
	  http.headers["SOAPAction"] = '"http://tempuri.org/IAtendimentoCliente/Consultar_Chamado"'
    end
    h = r.to_hash
	
	puts "\nRetorno consultar chamado: "
	puts h
	
	list = h[:consultar_chamado_response][:consultar_chamado_result]
	
	puts "\nlist="
	puts list
	  
	t = Ticket.new
	t.id = list[:id]
	t.idCliente = list[:id_solicitante]
	t.desc = list[:descricao]
	t.data = list[:data]
	  
    t
	
  end
  
  
  #Realiza pesquisa de todos os chamados de um cliente
  def consultar_chamado_cliente(idCliente)

	tickets = Array.new
	xml = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/"><soapenv:Header/><soapenv:Body><tem:Consultar_Chamados_Por_Usuario><tem:idCliente>00000000-0000-0000-0000-000000000012</tem:idCliente><tem:idUsuario>' + idCliente + '</tem:idUsuario><tem:tipoChamado>0</tem:tipoChamado></tem:Consultar_Chamados_Por_Usuario></soapenv:Body></soapenv:Envelope>'
	
	puts '\nXml='
	puts xml
 
	r = @client_ticket.request 'Consultar_Chamados_Por_Usuario', :xmlns => "http://tempuri.org/"  do 
	  soap.xml = xml
	  http.headers["SOAPAction"] = '"http://tempuri.org/IAtendimentoCliente/Consultar_Chamados_Por_Usuario"'
    end
    h = r.to_hash
	
	puts "\nRetorno consultar chamado: "
	puts h
	
	list = h[:consultar_chamados_por_usuario_response][:consultar_chamados_por_usuario_result][:chamado_resumido]
	
	puts "\nlist="
	puts list
	
	unless list.nil?
		list.each do |ci|
		  
		  puts ci
		  
		  t = Ticket.new
		  t.id = ci[:id]
		  t.idCliente = ci[:id_solicitante]
		  t.desc = ci[:descricao]
		  t.data = ci[:data]
		  
		  tickets.push t
		end
	end
  
	tickets
	
  end
  
end
